package br.com.fip.model;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name = "MES_DE_TRABALHO")
public class MesDeTrabalho {
	
	@Id
	@GeneratedValue
	@Column(name = "ID_MES_DE_TRABALHO")
	private long idMesDeTrabalho;;
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "MES_DE_TRABALHO")
	private Calendar mesDeTrabalho;
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "CARGA_HORARIA_MENSAL")
	private Calendar cargaHorariaMensal;
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "BONUS")
	private Calendar bonus;
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "DEFICE")
	private Calendar defice;
	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
	private List<Notificacao> notificacoes;
	
	public MesDeTrabalho(Calendar cargaHorariaMensal, Calendar bonus, Calendar defice, Calendar mesDeTrabalho){
		this.cargaHorariaMensal = cargaHorariaMensal;
		this.bonus = bonus;
		this.defice = defice;
		this.notificacoes = new ArrayList<Notificacao>();
		this.mesDeTrabalho = mesDeTrabalho;
	}

	public long getIdMesDeTrabalho() {
		return idMesDeTrabalho;
	}
	
	public Calendar getMesDeTrabalho(){
		return this.mesDeTrabalho;
	}
	
	public void setMesDeTrabalho(Calendar mesDeTrabalho){
		this.mesDeTrabalho = mesDeTrabalho;
	}

	public Calendar getCargaHorariaMensal() {
		return cargaHorariaMensal;
	}

	public void setCargaHorariaMensal(Calendar cargaHorariaMensal) {
		this.cargaHorariaMensal = cargaHorariaMensal;
	}

	public Calendar getBonus() {
		return bonus;
	}

	public void setBonus(Calendar bonus) {
		this.bonus = bonus;
	}

	public Calendar getDefice() {
		return defice;
	}

	public void setDefice(Calendar defice) {
		this.defice = defice;
	}

	public List<Notificacao> getNotificacoes() {
		return notificacoes;
	}

	public void adicionarNotificacoes(Notificacao notificacao) {
		this.notificacoes.add(notificacao);
	}

}
